package com.sikulifang.frequency.service;

/**
 * 效率控制
 *
 * @author zhoul 2020-11-18
 * @since 3.0.0
 */
@SuppressWarnings("unused")
public interface IFrequency {

    /**
     * 交易类型
     */
    String TYPE_TRADE = "trade";

    /**
     * 查询类型
     */
    String TYPE_QUERY = "query";

    /**
     * 不启用
     */
    int DISABLE = 0;

    /**
     * 只控制查询
     */
    int ONLY_QUERY = 1;

    /**
     * 只控制交易
     */
    int ONLY_TRADE = 2;

    /**
     * 查询、交易分开控制
     */
    int QUERY_TRADE_SEPARATE = 3;

    /**
     * 查询、交易同时控制
     */
    int QUERY_TRADE = 4;


    /**
     * 获取锁
     *
     * @param type 锁类型
     */
    void acquire(String type) throws InterruptedException;

    /**
     * 延迟
     *
     * @param type 锁类型
     * @param time 执行任务的时间
     */
    void delay(String type, long time);

    /**
     * 释放锁
     *
     * @param type 锁类型
     */
    void release(String type);


}
